using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using LDNS.Models;
using LDNS.Utilities;

namespace LDNS.Interfaces
{
    /// <summary>
    /// DNS服务接口
    /// 定义DNS服务的核心功能
    /// 作者：huobing
    /// </summary>
    public interface IDnsService : global::System.IDisposable
    {
        /// <summary>
        /// 获取服务是否正在运行
        /// </summary>
        bool IsRunning { get; }
        
        /// <summary>
        /// 获取服务监听端口
        /// </summary>
        int Port { get; }

        /// <summary>
        /// 启动DNS服务
        /// </summary>
        /// <returns>是否启动成功</returns>
        bool Start();
        
        /// <summary>
        /// 停止DNS服务
        /// </summary>
        void Stop();
        
        /// <summary>
        /// 获取服务运行时间
        /// </summary>
        /// <returns>服务运行时间间隔，如果服务未运行则返回TimeSpan.Zero</returns>
        TimeSpan GetUptime();
        
        /// <summary>
        /// 获取服务启动时间
        /// </summary>
        /// <returns>服务启动时间，如果服务未运行则返回DateTime.MinValue</returns>
        DateTime GetStartTime();
        
        /// <summary>
        /// 获取DNS服务统计信息
        /// </summary>
        /// <returns>DNS服务统计信息</returns>
        DnsStatistics GetDnsStatistics();
    }
}